去年八月份我在尝试AI翻唱的时候,没能在这块显卡上把so-vits-ai给跑起来(可能也是因为当时做的调查很不充分,没找到这个repo。如今已经一年过去,情况已经有了很多变化,我也比去年要更有时间。

多亏了这个Pull Request,I卡上面也能丝滑地进行AI翻唱了,效果很好,配置很简单。

准备Docker环境

以下内容针对Linux,如果你使用Windows,那么建议使用WSL2,可以参考官方教程(见文末参考)。

如果没有安装docker,那就安装一下。启用docker服务。

# pacman -S docker
# systemctl start docker

然后拉取Intel的官方映像(Image)。我自己就直接用去年折腾AI画图的那个映像了。

# docker pull intel/intel-extension-for-pytorch:xpu-flex-2.0.110-xpu

然后检查一下环境是否正常。运行映像,<image_name>:<tag>自己替换一下(intel-extension-for-pytorch:xpu-flex-2.0.110-xpu),下文不再说明。

# docker run --rm -it --privileged --device=/dev/dri --ipc=host <image_name>:<tag> bash

然后检查一下是否能跑。在docker里运行以下代码,看能否正确输出IPEX的版本、显卡设备的信息。

$ python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.__version__); print(ipex.__version__); [print(f'[{i}]: {torch.xpu.get_device_properties(i)}') for i in range(torch.xpu.device_count())];"

不使用Docker?

我个人强烈建议非Ubuntu 22.04的用户使用Docker,不然真的太折腾了。我自己反正是没能在Arch上跑起来,部分原因是intel-oneapi-basekit太新了。

Ubuntu 22.04下可以按照官方教程(见文末参考)把IPEX的环境配一下(ps. 我自己没尝试过)

准备好RVC-WebUI

找个合适的位置,我这里假设是/workspace,把这个repo克隆下来。

https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI.git rvc

然后进docker映像,启动命令里面记得把/workspace/rvc映射到容器的/opt/rvc,这里我们顺便把容器的7865端口映射出来。

# docker run --rm -it -v /workspace/lab/rvc:/opt/rvc -p 7865:7865 --privileged --device=/dev/dri --ipc=host <image_name>:<tag> bash

然后在容器的命令行里面配置一下环境,在执行pip命令之前可以顺便换成国内的镜像加加速。

$ cd /opt/rvc
$ pip install -r requirements-ipex.txt
# sudo apt install ffmpeg

如果没有出现问题,可以把容器的当前状态commit到一个新的映像里面,省得每次启动都要配一遍环境。<container_id>指的是容器的id,可以docker ps看一下。rvc是新映像的名字。

# docker commit <container_id> rvc

下载RVC所需的必要模型

Huggingface Hub找对应路径的模型,放到/workspace/rvc下的对应位置:

  • assets/hubert/hubert_base.pt
  • assets/pretrained
  • assets/uvr5_weights
  • assets/pretrained_v2

找个训练好的音色模型

比如说川大统领的RVC音色模型。我们需要两个文件,一个是模型本身model.pth,另一个是index文件model.index。把模型放到assets/weights里面。

开始!

在容器中运行infer-web.py

python3 infer-web.py

然后在浏览器打开对应的网址。如果不喜欢界面是全英文,可以把源码里面的i18n/i18n.py改一下。

首先找首歌。WebUI自带了一个界面供我们调用模型分离主要人声和伴奏。

拿到纯人声的歌声之后,我们在一开始的页面选中刚才下载的音色模型、对应的index文件、要替换音色的纯人声歌声,然后直接点一下转换就成了(如果刚才没有下载rmvpe模型,这里要把音高提取算法换成别的,其他参数一般直接使用默认值即可)。

参考